
/**
 *  \file GA_ccp_api.h
 *
 *  \brief This file defines the GA Call Control Profile Interface - includes
 *  Data Structures and Methods.
 */

/*
 *  Copyright (C) 2020. Mindtree Ltd.
 *  All rights reserved.
 */

#ifndef _H_GA_CCP_API_
#define _H_GA_CCP_API_


/* --------------------------------------------- Header File Inclusion */

/* --------------------------------------------- Global Definitions */

/* --------------------------------------------- Data types /Structures */

/* --------------------------------------------- Macros */

/* --------------------------------------------- APIs */

/**
 *  \brief To Init the GA Control Control Profile Module
 *
 *  \par Description:
 *       This function enables to initialize the GA VCP Module;
 *
 *  \return API_SUCCESS or an error code indicating reason for failure
 */
GA_RESULT GA_ccp_init(void);

/**
 *  \brief To Init the GA Control Control Profile Module
 *
 *  \par Description:
 *       This function enables to initialize the GA VCP Module;
 *
 *  \return API_SUCCESS or an error code indicating reason for failure
 */
GA_RESULT GA_ccp_shutdown(void);

#ifdef GA_CCP_CLIENT
/**
 * Discovered services are notitied to application, via an event.
 */
GA_RESULT GA_ccp_disc_service
          (
              /* IN  */ GA_ENDPOINT *device,
              /* IN  */ GA_BRR_UUID  tbs_uuid
          );

/**
 * Register the Service with the CCP ( As Client)
 */
GA_RESULT GA_ccp_setup_context
          (
              /* IN  */ GA_ENDPOINT *device,
              /* IN  */ GA_BRR_UUID  tbs_uuid,
              /* OUT */ UCHAR       *tbs_hndl
          );

/**
 * Discover Service char. for a given service handle.
 */
GA_RESULT GA_ccp_disc_service_composition
          (
              /* IN */ UCHAR    tbs_hndl
          );

GA_RESULT GA_ccp_get_brr_provider_name
          (
              /* IN  */ UINT8  tbs_hndl
          );

GA_RESULT GA_ccp_get_brr_uci
          (
              /* IN  */ UINT8  tbs_hndl
          );

GA_RESULT GA_ccp_get_brr_technology
          (
              /* IN  */ UINT8  tbs_hndl
          );

GA_RESULT GA_ccp_get_uci_schemes_supported_list
          (
              /* IN  */ UINT8  tbs_hndl
          );

GA_RESULT GA_ccp_get_signal_strength
          (
              /* IN  */ UINT8  tbs_hndl
          );

GA_RESULT GA_ccp_get_signal_reporting_interval
          (
              /* IN  */ UINT8  tbs_hndl
          );

GA_RESULT GA_ccp_set_signal_reporting_interval
          (
              /* IN  */ UINT8  tbs_hndl,
              /* IN  */ UINT8  rptr_intrvl
          );

GA_RESULT GA_ccp_get_brr_list_cur_calls
          (
              /* IN  */ UINT8  tbs_hndl
          );

GA_RESULT GA_ccp_get_content_control_id
          (
              /* IN  */ UINT8  tbs__hndl
          );

GA_RESULT GA_ccp_get_in_call_trgt_brr_uri
          (
              /* IN  */ UINT8  tbs_hndl
          );

GA_RESULT GA_ccp_get_status_flag
          (
              /* IN  */ UINT8  tbs_hndl
          );

GA_RESULT GA_ccp_get_call_state
          (
              /* IN  */ UINT8  tbs_hndl
          );

GA_RESULT GA_ccp_get_call_cp_optional_opcodes
          (
              /* IN  */ UINT8  tbs_hndl
          );

GA_RESULT GA_ccp_get_incoming_call
          (
              /* IN  */ UINT8  tbs_hndl
          );

GA_RESULT GA_ccp_get_call_friendly_name
          (
              /* IN  */ UINT8  tbs_hndl
          );

GA_RESULT GA_ccp_cp_req
          (
              /* IN  */ UINT8  tbs_hndl,
              /* IN */ UINT8   tbs_cp_op,
              /* IN */ void   *tbs_cp_req_data,
              /* IN */ UINT16  tbs_cp_req_datalen
          );

#endif /* GA_CCP_CLIENT */


#ifdef GA_CCP_SERVER
/**
 * Register the Service with the CCP ( As a Server)
 */
GA_RESULT GA_ccp_register_service
          (
              /* IN  */ GA_BRR_UUID  service_uuid,
              /* OUT */ UCHAR       *srvs_hndl
          );

#endif /* GA_CCP_SERVER */

#if 0
ccp_read_bearer_provider_name();
ccp_read_bearer_uci();
ccp_read_bearer_technology();
ccp_read_bearer_uci_schemes_supported_list();
ccp_read_bearer_signal_strength();
ccp_read_bearer_signal_strength_reporting_interval();
ccp_set_bearer_signal_strength_reporting_interval();
ccp_read_bearer_list_current_calls();
ccp_read_content_control_id();
ccp_read_incoming_call_target_bearer_uri();
ccp_read_status_flags();
ccp_read_call_state();
ccp_read_call_cp_optional_opcodes();
ccp_read_incoming_call();
ccp_read_call_friendly_name();

ccp_cp_answer_incoming_call();
ccp_cp_terminate_call();
ccp_cp_move_call_to_local_hold();
ccp_cp_move_locally_held_call_to_active_call();
ccp_cp_move_locally_and_remotely_held_call_to_remotely_held_call();
ccp_cp_originate_call();
ccp_cp_join_calls();
#endif /* 0 */

#endif /* _H_GA_CCP_API_ */



